package com.yanxu;

import java.nio.ByteBuffer;

/**
 * @author 折戟沉沙铁未销
 * @version V1.0
 * @date 2025/6/8-2025
 * @Description: 这里用一句话描述这个类的作用
 */
public class Test3 {
    public static void main(String[] args) {
        // 创建 ByteBuffer
        ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
        // 写入数据
        byteBuffer.putChar('a');
        byteBuffer.putChar('b');
        byteBuffer.putChar('c');
        byteBuffer.putInt(287);
        byteBuffer.putInt(300);

        // 翻转
        byteBuffer.flip();

        // 读取数据
        System.out.println(byteBuffer.getChar()); //读取一个字符 'a'
        System.out.println(byteBuffer.getChar()); //读取一个字符 'b'
        System.out.println(byteBuffer.getChar()); //读取一个字符 'c'
        System.out.println(byteBuffer.getInt()); //读取int值 287
        System.out.println(byteBuffer.getInt()); //读取int值 300

        //=============至此，已经将数据全部读取完毕了。=================
        //=============此时，可以调用 rewind() 方法  =================
        // 调用 rewind() ，进行倒带，也就是将 position 的指针从新指向 0 的位置，然后重新读取。
        // rewind()：方法调用之后，仍然是 "读取模式"。仅仅将 position的指针指向了0，开始的位置。
        byteBuffer.rewind();

        // 依然，可以再次读取一遍数据
        System.out.println(byteBuffer.getChar());
        System.out.println(byteBuffer.getChar());
        System.out.println(byteBuffer.getChar());
        System.out.println(byteBuffer.getInt());
        System.out.println(byteBuffer.getInt());
    }
}